"""
编写一个程序：从命令行读取一个奇数N，打印出N行N列的幻方。
幻方包含从1到N 2 的所有数字，每个数字只用一次。幻方的各个行之和、列之和以
及对角线之和都相等。

"""

def magic_squre(n):
    board = [[0] * n for i in range(n)]
    row = n-1  
    col = n//2
    board[row][col] = 1  # 最后一行中间填1

    for i in range(2, n * n + 1):
        try_row = (row + 1) % n  # 防止越界
        try_col = (col + 1) % n

        if board[try_row][try_col] == 0:  # 如果没有填过数字
            row = try_row
            col = try_col
        else:
            row = (row - 1 + n) % n

        board[row][col] = i

    for i in range(n):
        print(board[i])

magic_squre(3)